package ch06
{
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;

	import utils.Ball;

	/**
	 * 摩擦力，简便的方法.
	 * 大家也许都猜到了，简便的方法不像前面的方法那样精确，但是我敢打赌不会有人会注意到这些细微的变化。
	 * 只用两行简单的乘法即可搞定，我们所要做的就是用摩擦力乘以 x,y 速度向量，摩擦力常用的值大约为 0.9 或 0.8。
	 * 因此，在每一帧， vx 和 vy 的值都将变为上一次的 80% 或 90%。理论上，速度向量会无限接近零，但永远不会等于零。
	 * 在实际应用中，计算机计算如此小的数字的能力是有限的，所以最终都会取整为零。
	 * @author sjp
	 *
	 */
	public class Friction2 extends Sprite
	{
		private var ball:Ball;
		private var vx:Number=0;
		private var vy:Number=0;
		//摩擦力系数
		private var friction:Number=0.9;

		public function Friction2()
		{
			init();
		}

		private function init():void
		{
			stage.scaleMode=StageScaleMode.NO_SCALE;
			stage.align=StageAlign.TOP_LEFT;
			ball=new Ball();
			ball.x=stage.stageWidth / 2;
			ball.y=stage.stageHeight / 2;
			vx=Math.random() * 50 - 5;
			vy=Math.random() * 50 - 5;
			addChild(ball);
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}
	
		private function onEnterFrame(event:Event):void
		{
			vx*=friction;
			vy*=friction;
			ball.x+=vx;
			ball.y+=vy;
		}
	}
}